<?php
class lib_member extends spModel{
	/**
	 * 获取用户列表
	 * 或单个用户信息
	 * @param int $page 当前页码，默认为20行一页
	 * @param int $ucid 若输入用户的UCenterID，则该函数将返回一维数组，内容是该用户的信息
	 * @param int $groupid 若输入群组的ID，则该函数将返回二维数据，内容是该组的所有用户
	 * @return array 二维数组或一维数组
	 */
	function getMembers($page = 1, $ucid = NULL, $groupid = NULL){
		$this->tbl_name='rc_members';
		$this->pk='ucid';
		if (!empty($ucid)){
			return $this -> findBy('ucid', $ucid);
		}
		elseif (!empty($groupid)){
			return $this -> findAll(array('groupid'=>$groupid));
		}
		else {
			return $this -> spPager($page, 20) -> findAll();
		}
	}
	
	/**
	 * 与UCenter数据混合
	 * 该函数将$memberlist数组中的UCenter数值转化为字值
	 * @param array $memberlist 原始二维数组，勿输入一维数组（不支持）
	 * @return array 结果，二维数组
	 */
	function mixUc($memberlist){
		$uc = spClass('spUcenter');
		for($i=0;isset($memberlist[$i]);$i++){
			$userinfo = $uc -> uc_get_user($memberlist[$i]['ucid'],1);
			$memberlist[$i]['username'] = $userinfo[1];
			$memberlist[$i]['email'] = $userinfo[2];
		}
		return $memberlist;
	}
	
	/**
	 * 获取分页信息
	 * 当执行完成getMembers()后可通过该函数获取详细的分页信息
	 * @return array
	 */
	function memberPager(){
		return $this -> spPager() -> getPager();
	}
	
	/**
	 * 获取反式群组数组
	 * 该函数将返回一维数组，其键名是groupid，其键值是groupname
	 * @return array
	 */
	function exGroup(){
		$this->tbl_name='rc_groups';
		$this->pk='groupid';
		$groups = $this -> findAll();
		$returns = array();
		for($i=0;isset($groups[$i]);$i++){
			$returns[$groups[$i]['groupid']] = $groups[$i]['groupname'];
		}
		return $returns;
	}
	
	/**
	 * 将数组中的groupid转化为groupname
	 * @param array $memberlist 原始二维数组，勿输入一维数组（不支持）
	 * @return array 结果，二维数组
	 */
	function exGroupId($memberlist){
		$group_options = $this->exGroup();
		for($i=0;isset($memberlist[$i]);$i++){
			$memberlist[$i]['groupid'] = $group_options[$memberlist[$i]['groupid']];
		}
		return $memberlist;
	}
	
	/**
	 * 删除一个用户
	 * 在RCenter库中删除该用户的所有信息，但不影响该用户在UCenter中的信息
	 * @param int $ucid 用户的UCenterID
	 * @return int 影响行数，大于0，表示删除成功
	 */
	function deleteMember($ucid){
		if(empty($ucid))return FALSE;
		$this->tbl_name='rc_members';
		$this->pk='ucid';
		$this->delete(array('ucid'=>$ucid));
	}
	
	/**
	 * 编辑一个用户的信息
	 * 该函数仅用于更改用户的群组归属
	 * @param int $ucid 用户的UCenterID
	 * @param int $groupid 需要修改成的群组ID
	 * @return int 影响行数，大于0，表示修改成功
	 */
	function editMember($ucid,$groupid){
		if(empty($ucid))return FALSE;
		$this->tbl_name='rc_members';
		$this->pk='ucid';
		$this->update(array('ucid'=>$ucid), array('groupid'=>$groupid));
	}
	
	/**
	 * 新增用户到RCenter数据库中
	 * @param int $ucid UCenterID（必须）
	 * @param int $groupid RCenter群组ID
	 * @return bool 成功则返回真值
	 */
	function addUser($ucid,$groupid = 0){
		if(empty($ucid))return FALSE;
		$this -> tbl_name = 'rc_members';
		$this -> pk = 'ucid';
		if($this->create(array('ucid'=>$ucid,'groupid'=>$groupid)) != FALSE)return TRUE;
		return FALSE;
	}
}